//package com.itclass.oder;
//
//import com.fangcang.hotel.framework.common.domain.ResultX;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.CrossOrigin;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.UUID;
//import java.util.concurrent.CompletableFuture;
//import java.util.concurrent.ExecutionException;
//import java.util.concurrent.TimeUnit;
//import java.util.concurrent.TimeoutException;
//import java.util.concurrent.locks.ReentrantLock;
//
//
///**
// * @description: 接受数据推送接口
// * @Author 万伟焕
// * @Date 2023-11-30 09:06:42
// **/
//@RestController
//public class TestController {
//
//    private SnowflakeDistributeId idWorker = new SnowflakeDistributeId(1, 1);
//
//    @Autowired
//    private MqService mqService;
//
//    private volatile  int i =0;
//
//    @GetMapping("/test")
//    @CrossOrigin
//    public ResultX test() throws Exception {
//
//        OrderCompletableFuture<OrderInfo> completableFuture = new OrderCompletableFuture<>();
//        Long id = idWorker.nextId();
//
//        // 添加任务
//        MqService.concurrentMap.put(id, completableFuture);
//
//        // MQ发送消息
//        mqService.sendMessage(id);
//
//
//        // 当前线程阻塞等待5秒
//        OrderInfo o = completableFuture.get(5, TimeUnit.SECONDS);
//
//        if ((completableFuture = MqService.concurrentMap.remove(id)) != null && completableFuture.isComplete() && o != null) {
//            return ResultX.success(o);
//        } else {//
//            return ResultX.error("500", "error", "创建订单失败，当前系统人数太多了，请稍后重试！！！");
//        }
//    }
//
//    @GetMapping("/test1")
//    @CrossOrigin
//    public ResultX test1() {
//
//        Thread t1  =new Thread(){
//            @Override
//            public void run() {
//
//                while (true) {
//                    Long orderId = MqService.priorityQueue.poll();
//
//                    if (orderId == null) {
//                        continue;
//                    }
//                    // 根据全局id 获取 异步结果任务
//                    OrderCompletableFuture<OrderInfo> future = MqService.concurrentMap.get(orderId);
//                    if (future == null) {
//                        continue;
//                    }
//
//                    OrderInfo orderInfo = new OrderInfo();
//                    orderInfo.setOrderId(orderId);
//
//                    //消息消费完成，唤醒阻塞线程
//                    if (future.complete(orderInfo)) {
//
//                        //唤醒成功
//                        System.out.println(++i +Thread.currentThread().getName() + " 唤醒成功，orderId：" + orderId);
//                    } else {
//
//                        // 唤醒失败，走回滚策列
//                        System.out.println(Thread.currentThread().getName()+" 唤醒失败");
//                    }
//
//                }
//            }
//        };
//
//        t1.setName("t1");
//        t1.start();
//
//
//        Thread t2  =new Thread(){
//            @Override
//            public void run() {
//
//                while (true) {
//                    Long orderId = MqService.priorityQueue.poll();
//
//                    if (orderId == null) {
//                        continue;
//                    }
//                    // 根据全局id 获取 异步结果任务
//                    OrderCompletableFuture<OrderInfo> future = MqService.concurrentMap.get(orderId);
//                    if (future == null) {
//                        continue;
//                    }
//
//                    OrderInfo orderInfo = new OrderInfo();
//                    orderInfo.setOrderId(orderId);
//
//
//                    //消息消费完成，唤醒阻塞线程
//                    if (future.complete(orderInfo)) {
//
//                        //唤醒成功
//                        System.out.println(++i + Thread.currentThread().getName() + " 唤醒成功，orderId：" + orderId);
//                    } else {
//
//                        // 唤醒失败，走回滚策列
//                        System.out.println(Thread.currentThread().getName()+" 唤醒失败");
//                    }
//
//                }
//            }
//        };
//
//        t2.setName("t2");
//        t2.start();
//
//        return ResultX.success();
//    }
//}
//
//
